import { Request, Response, NextFunction } from 'express'

export const errorHandler = (
  error: any,
  req: Request,
  res: Response,
  next: NextFunction
): void => {
  console.error('错误详情:', error)

  // Mongoose 验证错误
  if (error.name === 'ValidationError') {
    const messages = Object.values(error.errors).map((err: any) => err.message)
    res.status(400).json({
      success: false,
      message: '数据验证失败',
      errors: messages
    })
    return
  }

  // Mongoose 重复键错误
  if (error.code === 11000) {
    const field = Object.keys(error.keyValue)[0]
    res.status(400).json({
      success: false,
      message: `${field} 已存在`
    })
    return
  }

  // JWT 错误
  if (error.name === 'JsonWebTokenError') {
    res.status(401).json({
      success: false,
      message: '无效的token'
    })
    return
  }

  // 默认错误
  res.status(error.statusCode || 500).json({
    success: false,
    message: error.message || '服务器内部错误'
  })
}